# Открывающий тег (Opening tag):  Этот компонент HTML-структуры состоит из имени элемента, взятого в угловые скобки.
# Открывающий тег служит индикатором начала действия определенного элемента. В данном контексте он сигнализирует о
# начале нового абзаца, обозначенного тегом <p>.
# <p>Учим парсинг вместе</p>
# Закрывающий тег (Closing tag): Внешне похож на открывающий тег, но имеет дополнительную косую черту перед именем
# элемента. Этот тег указывает на место, где действие элемента завершается. В примере выше, он обозначает конец
# абзаца/параграфа. Отсутствие закрывающего тега — это одна из наиболее распространенных ошибок среди новичков
# в веб-разработке, и это может привести к непредсказуемым и неожиданным результатам.
# смотри example.html

# Контент (Content):  Этот термин описывает собственно содержимое элемента, которое в нашем случае является текстом.
# Контент располагается между открывающим и закрывающим тегами и представляет собой информацию, которую необходимо
# отобразить и именно контент мы и будем парсить.

# Элемент(Element): Открывающий тег, закрывающий тег и контент в совокупности формируют полноценный HTML-элемент.
# Элемент представляет собой базовую единицу структуры HTML-документа и служит для оформления или структурирования
# информации на веб-странице.

# HTML тег действует как контейнер, где хранится контент. В этой роли, теги служат инструментами для организации и
# форматирования содержимого на веб-странице.

# Одинарные и парные теги. В одинарных тегах, таких как <img>, <br>, <input>, закрывающий элемент отсутствует.
# Это потому, что такие теги не обрамляют дополнительный контент. С другой стороны, у парных тегов, таких как <p>, <div>,
# <span>, есть и открывающий, и закрывающий элементы. Между ними находится сам контент.

# Открывающий и закрывающий: две стороны одной медали: Чтобы не было путаницы, открывающий и закрывающий теги — это
# не два разных объекта. Они являются различными аспектами одного и того же элемента в HTML. Они работают вместе, чтобы
# дать браузеру понять, как отобразить содержимое, заключенное между ними. Здесь ключевое понимание — они составляют
# единую структурную и функциональную единицу.

#Элементы также могут иметь атрибуты, которые выглядят так:
#<p class="text">Учим парсинг вместе</p>
# Для успешного парсинга, вам необходимо понимать структуру HTML-элементов, и здесь атрибуты играют ключевую роль.
# Это ваши "точки ориентиров" при извлечении информации с веб-страницы. Поэтому давайте разберёмся, как правильно
# "читать" атрибуты, чтобы потом успешно их "ловить" в дереве DOM.

# Пробел между атрибутом и именем элемента: Никаких исключений, пробел должен быть всегда. Если элемент уже имеет один
# или несколько атрибутов, пробел также должен располагаться между ними. Это ваш первый сигнал, что начинается новый
# атрибут, к которому можно "привязаться" при парсинге.

# <p class="text" id="unique">Учим парсинг вместе</p>
# Имя атрибута и знак равенства: После имени атрибута обязательно должен следовать знак равенства.
# Это важный момент, так как имя атрибута — это то, что вы будете использовать для поиска конкретного
# элемента на веб-странице. Если имя и знак равенства на месте — значит, вы на правильном пути.

# Пример того как мы будем искать тег по двум атрибутам class и id

# soup.find('p', {'class': 'text', 'id': 'unique'}).text


# Кавычки вокруг значения атрибута: Значение атрибута должно быть обрамлено кавычками — это непреложный закон HTML.
# Именно в этих кавычках находится информация, которую вы, возможно, захотите извлечь. Заметьте, что это могут быть
# как одинарные, так и двойные кавычки.

# В HTML возможно применение нескольких классов к одному элементу, разделённых пробелами.
# Это позволяет применять к элементу сразу несколько стилей или упрощает выборку элементов при парсинге.
# Вот пример элемента с двойным классом:
#
# # <!-- Пример элемента с двойным классом -->
# # <p class="text highlight">Это абзац с двойным классом.</p>
#
# Когда необходимо парсить такой элемент с использованием BeautifulSoup, вы можете сделать это следующим образом:
#
# # Поиск элемента с двойным классом
#
# soup.find('p', {'class': ['text', 'highlight']})



















